/**
*	@class PlatformWin32
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __PLATFORM_WIN32_H_INCLUDED__
#define __PLATFORM_WIN32_H_INCLUDED__

//  Library Includes

//  Local Includes
#include "IPlatform.h"

//  Macros

//  Forward Declarations
class Clock;

//  Types

//  Constants

//  Prototypes

namespace Protein
{

class PlatformWin32 : public IPlatform
{
	friend class ProteinFramework;

	//Member Functions
public:

	virtual bool Initialise();

	static LRESULT StaticWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

	inline void SetHInstance( HINSTANCE _hInstance ){ m_hInstance = _hInstance; }
	inline HINSTANCE GetHInstance() const { return m_hInstance; }
	inline HWND GetHWND() const { return m_hWnd; }

protected: 

	PlatformWin32();
	virtual ~PlatformWin32();

private: 

	//Member Variables
public:

protected: 

private: 

	HWND						m_hWnd;
	HINSTANCE					m_hInstance;
};

}

#endif //__PLATFORMWIN32_H_INCLUDED__
